"""
LeetCode 热题

给你一个字符串数组，请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的所有字母得到的一个新单词。
"""

from collections import defaultdict

class Solution(object):
    def groupAnagrams(self, strs):
        """
        将一组字符串按照字母异位词分组返回

        字母异位词指的是字母相同，但排列不同的字符串

        参数:
        strs (List[str]): 一组字符串列表

        返回:
        List[List[str]]: 分组后的字母异位词列表
        """
        # 创建一个默认字典,值为列表
        anagrams = defaultdict(list)

        # 遍历字符串数组
        for s in strs:
            # 将字符串排序,并作为字典的键 将字符串添加到对应的值列表中
            anagrams[''.join(sorted(s))].append(s)

        # 返回字典中所有值列表
        return list(anagrams.values())


if __name__ == '__main__':
    a = Solution()
    strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
    print(a.groupAnagrams(strs))
